As described in McCanne I, McCanne III, and McCanne V, a system of transaction accelerators can improve performance of protocols such as CIFS and NFS by pre-acknowledging asynchronous writes. As described in Burman, such capabilities can also be useful for a variety of distributed server systems. Such pre-acknowledgement is allowed by the protocol semantics and thus ordinarily does not affect correctness, while allowing a substantial performance improvement.
However, in some rare scenarios the LAN connection between the server-side transaction accelerator and the server could severely degrade, or the server performance could be inadequate for the request volume being sent. Common examples of problems that cause such LAN degradation include the presence of speed/duplex misconfigurations or the LAN dropping to a lower-speed regime (such as 10 Mb/s instead of 100 Mb/s). Such degradation may cause connections to terminate due to the server or the client timing out. The server terminating the connection might result in loss of data that has been acknowledged.
While technically allowed by the protocol, such behavior is undesirable and should be avoided. To avoid this problem, the system of transaction accelerators must pre-acknowledge writes only as fast as the server can process them. In addition, delivering requests at a pace that matches the server's capacity makes better use of server resources and allows the server to support higher overall volumes of traffic.
A bottleneck in the system is at the server-side transaction accelerator. If the server or server-side LAN have inadequate performance, it is possible that the pre-acknowledged writes could be waiting for a long time on the server-side transaction accelerator and in rare scenarios cause data loss.